package P052_UsingDirectStringWhenAssign;

import org.junit.Test;

/**
 * Desc:&emsp;&ensp;推荐使用字符串直接量赋值
 *
 * @author 李渊&emsp;liyuan7@yusys.com.cn
 * @version 1.0
 * @since V4.3&emsp;2022/3/24
 */
public class UsingDirectStringWhenAssign {
    @Test
    public void Test1() {
        // 直接量直接放到到字符串常量池中
        String s1 = "中国";
        // 池中已经有了“中国”，s2直接从池中拿
        String s2 = "中国";
        // new String不会检查池也不会放到池
        String s3 = new String("中国");
        // intern会取缓存
        String s4 = s3.intern();
        System.out.println(s1==s2);
        System.out.println(s1==s3);
        System.out.println(s1==s4);

        // 放到池中是否线程安全
        /* String是一个不可变（Immutable）对象：
            1: String是final类,不可继承；
            2: String类中提供的所有需要返回String的方法都会新建一个String对象，
         */
        // 字符串常量池不会被GC
    }
}
